package admin

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"strings"
	"syudy/Models"
)

type ManagerController struct {
	BaseController
}

// 管理员页面控制器
func (con ManagerController) Index(c *gin.Context) {
	managerList := []Models.Manager{}
	Models.DB.Preload("Role").Find(&managerList)
	c.HTML(http.StatusOK, "admin/manager/index.html", gin.H{
		"managerList": managerList,
	})
}

func (con ManagerController) Add(c *gin.Context) {
	//获取所有角色
	roleList := []Models.Role{}
	Models.DB.Find(&roleList)
	c.HTML(http.StatusOK, "admin/manager/add.html", gin.H{
		"roleList": roleList,
	})
}

// 添加管理员
func (con ManagerController) DoAdd(c *gin.Context) {
	//获取前端传过来的角色ID
	roleId, err := con.StringInt(c.PostForm("role_id"))
	if err != nil {
		con.Error(c, "传入数据错误", "/admin/manager/add")
	}
	//获取前端传过来的新增管理员信息
	username := strings.Trim(c.PostForm("username"), " ")
	password := strings.Trim(c.PostForm("password"), " ")
	mobile := strings.Trim(c.PostForm("mobile"), " ")
	email := strings.Trim(c.PostForm("email"), " ")
	//判断用户名或者密码是否合规
	if len(username) < 2 || len(password) < 6 {
		con.Error(c, "用户名和密码的长度不合法", "/admin/manager/add")
	}
	//获取已有管理员信息
	managerlist := []Models.Manager{}
	Models.DB.Where("username =?", username).Find(&managerlist)
	//如果数据库中已经存在该用户，提示管理员已存在，返回错误
	if len(managerlist) > 0 {
		con.Error(c, "此管理员已经存在", "/admin/manager/add")
		return
	}
	//前端传过来的信息赋值给结构体，在数据库中创建
	manager := Models.Manager{
		RoleId:   roleId,
		Username: username,
		Password: Models.Md5(password),
		Mobile:   mobile,
		Email:    email,
		Status:   1,
		AddTime:  int(con.GetTime()),
	}
	err1 := Models.DB.Create(&manager).Error
	if err1 != nil {
		con.Error(c, "添加管理员失败", "/admin/manager/add")
	} else {
		con.Success(c, "添加管理员成功", "/admin/manager")
	}
}

func (con ManagerController) Edit(c *gin.Context) {
	c.HTML(http.StatusOK, "admin/manager/add.html", gin.H{})
}

func (con ManagerController) Delete(c *gin.Context) {
	c.String(http.StatusOK, "")
}
